﻿using System.Collections.Generic;
using System.Data;
using Game.DataAccess.DTO;

namespace Game.DataAccess.DAO
{
    public interface ISlotDao
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="serviceid"></param>
        /// <param name="accessToken"></param>
        /// <param name="accountId"></param>
        /// <param name="username"></param>
        /// <param name="betRoom"></param>
        /// <param name="betValue"></param>
        /// <param name="balance"></param>
        /// <param name="referenceId"></param>
        /// <param name="clientIp"></param>
        /// <param name="descriptions"></param>
        /// <param name="responseStatus"></param>
        void  SlotMachine_Create(int serviceid,string accessToken ,int accountId,string username,int betRoom,int betValue,ref long  balance,long referenceId,string clientIp,string descriptions,ref long responseStatus);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="serviceid"></param>
        /// <param name="accessToken"></param>
        /// <param name="accountId"></param>
        /// <param name="username"></param>
        /// <param name="betRoom"></param>
        /// <param name="prizeValue"></param>
        /// <param name="balance"></param>
        /// <param name="referenceId"></param>
        /// <param name="clientIp"></param>
        /// <param name="descriptions"></param>
        /// <param name="responseStatus"></param>
        void SlotMachine_Award(int serviceid,string accessToken ,int accountId,string username,int betRoom,int prizeValue,ref long balance,long referenceId,string clientIp,string descriptions,ref long responseStatus);



        void Account_Insert(int acountId, string acountName, int pointWin, int pointPayment);
            
    


        /// <summary>
        /// Lấy thông tin tài khoản ban đầu
        /// </summary>
        /// <param name="accountId"></param>
        /// <returns></returns>
        List<AccountInfo> GetAccountInfo(int accountId);

        /// <summary>
        /// lịch sử người chơi
        /// </summary>
        /// <param name="accountId"></param>
        /// <returns></returns>
        List<AccountHistory> GetHistoryWinner(int accountId);
        /// <summary>
        /// Lịch sử jackpot
        /// </summary>
        /// <returns></returns>
        List<HistoryJackport> GetHistoryJackport();

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        List<JackpotInfo> GetJackpotInfo();

        /// <summary>
        ///  Lấy thông tin đào vàng 
        /// </summary>
        /// <param name="betLogId"></param>
        /// <param name="accountId"></param>
        /// <returns></returns>
        List<DigGoldInfo> GetDigGoldInfo(long betLogId, int accountId);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="betLogId"></param>
        /// <param name="isFree"></param>
        /// <param name="sumBetMoney"></param>
        /// <param name="sumWinMoney"></param>
        /// <param name="winMoneyDigGold"></param>
        /// <param name="countLineWin"></param>
        /// <param name="bonnusMiniGame"></param>
        /// <param name="resultString"></param>
        /// <param name="response"></param>
        /// <returns></returns>
        List<WinnerInfo> GetWinnerInfo(long betLogId,ref int isFree, ref int sumBetMoney, ref int sumWinMoney, ref int winMoneyDigGold, ref int countLineWin,
                                      ref string bonnusMiniGame, ref string resultString, ref int response);



        List<WinnerInfo> GetWinnerInfo_WithResultString(long betLogId, string resultStringInput,ref int isFree,
                                                        ref int sumBetMoney, ref int sumWinMoney,
                                                        ref int winMoneyDigGold, ref int countLineWin,
                                                        ref string bonnusMiniGame, ref string resultString,
                                                        ref int response);
 
        /// <summary>
        /// 
        /// </summary>
        /// <param name="accountId"></param>
        /// <param name="roomId"></param>
        /// <param name="betLine"></param>
        /// <param name="isFree"></param>
        /// <param name="ipAdd"></param>
        /// <param name="betMoney"></param>
        /// <param name="responseStatus"></param>
        void InsertBetLog(int accountId, int roomId, string betLine, int isFree , string ipAdd, ref int betMoney,ref long responseStatus);



        /// <summary>
        /// 
        /// </summary>
        /// <param name="betlogId"></param>
        /// <param name="accountId"></param>
        /// <param name="accountName"></param>
        /// <param name="changeMoney"></param>
        /// <param name="moneyBonnus"></param>
        /// <param name="processStatus"></param>
        /// <param name="ip"></param>
        /// <param name="descryption"></param>
        /// <param name="status"></param>
        /// <param name="requestId"></param>
        void InsertChangingLog_Input(long betlogId,int accountId, string accountName,int changeMoney,int moneyBonnus,
                                     int processStatus, string ip, string descryption, int status,
                                     ref long requestId);


       

        /// <summary>
        /// 
        /// </summary>
        /// <param name="betLogId"></param>
        /// <param name="accountId"></param>
        /// <param name="accountName"></param>
        /// <param name="changeMoney"></param>
        /// <param name="processStatus"></param>
        /// <param name="ip"></param>
        /// <param name="descryption"></param>
        /// <param name="status"></param>
        /// <param name="requestId"></param>
        void InsertChangingLog_Output(long betLogId,int accountId, string accountName, ref int changeMoney,
                                      int processStatus, string ip, string descryption, int status,
                                      ref long requestId);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="requestId"></param>
        /// <param name="processStatus"></param>
        /// <param name="reponseStatus"></param>
        /// <param name="descryption"></param>
        /// <param name="status"></param>
        /// <param name="returnvalue"></param>
        void UpdateChangingLog_Input(long requestId, int processStatus, int reponseStatus, string descryption,
                                     int status, ref int returnvalue);

     

        void UpdateChangingLog_Output(long requestId, int processStatus, int reponseStatus, string descryption,
                                     int status, ref int returnvalue);



    

    }

    
}
